package org.jeecg.modules.rental.service;

import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.iot.model.control.CentralControlConfig;
import org.jeecg.modules.rental.req.EBikeTrackReq;

public interface ICtrlEBikeService {

    //============================== 基于租车套餐的操作 ==============================

    Boolean powerOnByPkg(); // 基于租车套餐点火

    Boolean powerOffByPkg(); // 基于租车套餐熄火

    Boolean lockedByPkg(); // 基于租车套餐锁车

    Boolean unlockByPkg(); // 基于租车套餐解锁

    Boolean searchByPkg(); // 基于租车套餐寻车

    Boolean unlockSeatByPkg(); // 基于租车套餐解锁座椅

    Boolean setSportModeByPkg(Boolean enable);

    String trackListBypkg(EBikeTrackReq trackReq);

    Boolean startPushByPkg();

    //============================== 基于租车账户(绑定车辆)的操作 ==============================
    Boolean powerOnByAccount();

    Boolean powerOffByAccount();

    Boolean lockedByAccount();

    Boolean unlockByAccount();

    Boolean searchByAccount();

    Boolean unlockSeatByAccount();

    Boolean setSportModeByAccount(Boolean enable);

    String trackListByAccount(EBikeTrackReq trackReq);

    Boolean startPushByAccount();

    //============================== 直接操作车辆 ==============================
    Boolean powerOn(String carCode);

    Boolean powerOff(String carCode);

    Boolean locked(String carCode);

    Boolean unlock(String carCode);

    Boolean search(String carCode);

    Boolean unlockSeat(String carCode);
    Boolean lockOpen(String carCode);

    Boolean lockClose(String carCode);

    Boolean setSportMode(String carCode, Boolean enable);

    String trackList(EBikeTrackReq trackReq, String carCode);

    Boolean getSportModeStatus(String carCode, String phone);

    Boolean pairRemoteControl(String carCode);

    Boolean clearRemoteControl(String carCode);

    Boolean setVolume(String carCode, Integer volume);

    Boolean setPlayAudio(String carCode, Byte audioIndex);

    Integer setPower(String carCode);

    Integer queryPower(String carCode);

    Result setSpeed(String carCode);

    String queryControl(String carCode);

    Result setControl(String carCode, CentralControlConfig config);
}
